// function foo() {
// 	console.log( this.a );
// }
// function doFoo(fn) {
// 	// fn 其实引用的是 foo
// 	fn(); // <-- 调用位置！
// }
// var obj = {
// 	a: 2,
//   foo: foo
// };
// var a = "oops, global"; // a 是全局对象的属性
// doFoo( obj.foo ); // "oops, global"
// obj.foo.call(obj)



// 实现 bind
// Function.prototype.myBind = function() {
//   var thatFunc = this;
//   let thatArgs = arguments[0];
//   let args = Array.prototype.slice.call(arguments, 1);
//   if (thatFunc !== 'function') {
//     throw new TypeError('is not a function')
//   }
//   return function () {
//     var funcArgs = args.concat(Array.prototype.slice.call(arguments))
//     return thatFunc.apply(thatArgs, funcArgs);
//   } 
// }


